


package jnpf.zc.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jnpf.base.ActionResult;
import jnpf.base.UserInfo;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.exception.DataException;
import jnpf.permission.entity.UserEntity;
import jnpf.util.GeneraterSwapUtil;
import jnpf.util.JsonUtil;
import jnpf.util.RandomUtil;
import jnpf.util.UserProvider;
import jnpf.zc.entity.ZcglZcdjInfoEntity;
import jnpf.zc.entity.ZcglZcrzZcdyEntity;
import jnpf.zc.mapper.ZcglZcdjInfoMapper;
import jnpf.zc.model.zcglzcrzzcdy.ZcglZcrzZcdyForm;
import jnpf.zc.model.zcglzcrzzcdy.ZcglZcrzZcdyInfoVO;
import jnpf.zc.model.zcglzcrzzcdy.ZcglZcrzZcdyListVO;
import jnpf.zc.model.zcglzcrzzcdy.ZcglZcrzZcdyPagination;
import jnpf.zc.service.ZcglZcrzZcdyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 *
 * ZcglZcrzZcdy
 * @版本： V3.2.0
 * @版权： 智果云科技（https://www.jnpfsoft.com）
 * @作者： JNPF开发平台组
 * @日期： 2024-12-31
 */
@Slf4j
@RestController
@Api(tags = "ZcglZcrzZcdy" , value = "example")
@RequestMapping("/api/example/ZcglZcrzZcdy")
public class ZcglZcrzZcdyController {

    @Autowired
    private GeneraterSwapUtil generaterSwapUtil;


    @Autowired
    private UserProvider userProvider;


    @Autowired
    private ZcglZcrzZcdyService zcglZcrzZcdyService;
    @Autowired
    private ZcglZcdjInfoMapper zcdjInfoMapper;



    /**
     * 列表
     *
     * @param zcglZcrzZcdyPagination
     * @return
     */
    @ApiOperation("获取列表")
	@PostMapping("/getList")
    public ActionResult list(@RequestBody ZcglZcrzZcdyPagination zcglZcrzZcdyPagination)throws IOException{
        List<ZcglZcrzZcdyEntity> list= zcglZcrzZcdyService.getList(zcglZcrzZcdyPagination);
        //处理id字段转名称，若无需转或者为空可删除

    List<ZcglZcrzZcdyListVO> listVO=JsonUtil.getJsonToList(list,ZcglZcrzZcdyListVO.class);
    for(ZcglZcrzZcdyListVO zcglZcrzZcdyVO:listVO){
								Map<String,Object> assetNameMap = new HashMap<>();
                zcglZcrzZcdyVO.setAssetName_name(generaterSwapUtil.getPopupSelectValue("612769091110831365","id","fullName",zcglZcrzZcdyVO.getAssetName(),assetNameMap));

                zcglZcrzZcdyVO.setMortgageUnit_name(zcglZcrzZcdyVO.getMortgageUnit());

                zcglZcrzZcdyVO.setMortgagePeriodStart_name(zcglZcrzZcdyVO.getMortgagePeriodStart());

                zcglZcrzZcdyVO.setMortgagePeriodEnd_name(zcglZcrzZcdyVO.getMortgagePeriodEnd());

                zcglZcrzZcdyVO.setNotes_name(zcglZcrzZcdyVO.getNotes());

                zcglZcrzZcdyVO.setMortgageFile_name(generaterSwapUtil.getFileNameInJson(zcglZcrzZcdyVO.getMortgageFile()));

		//子表数据转换
     }

         PageListVO vo=new PageListVO();
         vo.setList(listVO);
         PaginationVO page=JsonUtil.getJsonToBean(zcglZcrzZcdyPagination,PaginationVO.class);
         vo.setPagination(page);
         return ActionResult.success(vo);

    }

    /**
     * 创建
     *
     * @param zcglZcrzZcdyForm
     * @return
     */
    @PostMapping
    @Transactional
    @ApiOperation("创建")
    public ActionResult create(@RequestBody @Valid ZcglZcrzZcdyForm zcglZcrzZcdyForm) throws DataException {
        boolean b =  zcglZcrzZcdyService.checkForm(zcglZcrzZcdyForm,0);
        if (b){
         return ActionResult.fail("单行输入不能重复");
        }
        String mainId =RandomUtil.uuId();

        UserInfo userInfo=userProvider.get();
		UserEntity userEntity = generaterSwapUtil.getUser(userInfo.getUserId());
        ZcglZcrzZcdyEntity entity = JsonUtil.getJsonToBean(zcglZcrzZcdyForm, ZcglZcrzZcdyEntity.class);
        entity.setId(mainId);

        //根据资产编码获取资产名称
        ZcglZcdjInfoEntity zcglZcdjInfoEntity = zcdjInfoMapper.selectById(zcglZcrzZcdyForm.getAssetName());
        entity.setAssetName(zcglZcdjInfoEntity.getZcName());

        zcglZcrzZcdyService.save(entity);
        return ActionResult.success("创建成功");
}



    /**
    * 信息
    *
    * @param id
    * @return
    */
    @ApiOperation("信息")
    @GetMapping("/{id}")
    public ActionResult<ZcglZcrzZcdyInfoVO> info(@PathVariable("id") String id){
        ZcglZcrzZcdyEntity entity= zcglZcrzZcdyService.getInfo(id);
        ZcglZcrzZcdyInfoVO vo=JsonUtil.getJsonToBean(entity, ZcglZcrzZcdyInfoVO.class);

    //子表
    //副表
        return ActionResult.success(vo);
    }

    /**
    * 表单信息(详情页)
    *
    * @param id
    * @return
    */
    @ApiOperation("表单信息(详情页)")
    @GetMapping("/detail/{id}")
    public ActionResult<ZcglZcrzZcdyInfoVO> detailInfo(@PathVariable("id") String id){
        ZcglZcrzZcdyEntity entity= zcglZcrzZcdyService.getInfo(id);
        ZcglZcrzZcdyInfoVO vo=JsonUtil.getJsonToBean(entity, ZcglZcrzZcdyInfoVO.class);

 //子表数据转换

 //附表数据转换

//添加到详情表单对象中
								Map<String,Object> assetNameMap = new HashMap<>();
                vo.setAssetName(generaterSwapUtil.getPopupSelectValue("612769091110831365","id","fullName",vo.getAssetName(),assetNameMap));

                vo.setMortgageUnit(vo.getMortgageUnit());

                vo.setMortgagePeriodStart(vo.getMortgagePeriodStart());

                vo.setMortgagePeriodEnd(vo.getMortgagePeriodEnd());

                vo.setNotes(vo.getNotes());

                vo.setMortgageFile(generaterSwapUtil.getFileNameInJson(vo.getMortgageFile()));


        return ActionResult.success(vo);
		}




   /**
    * 更新
    *
    * @param id
    * @param zcglZcrzZcdyForm
    * @return
    */
    @PutMapping("/{id}")
    @Transactional
    @ApiOperation("更新")
    public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid ZcglZcrzZcdyForm zcglZcrzZcdyForm) throws DataException {
        boolean b =  zcglZcrzZcdyService.checkForm(zcglZcrzZcdyForm,1);
        if (b){
         return ActionResult.fail("单行输入不能重复");
        }
        UserInfo userInfo=userProvider.get();
        ZcglZcrzZcdyEntity entity= zcglZcrzZcdyService.getInfo(id);
        if(entity!=null){
            ZcglZcrzZcdyEntity subentity=JsonUtil.getJsonToBean(zcglZcrzZcdyForm, ZcglZcrzZcdyEntity.class);
				boolean b1 = zcglZcrzZcdyService.updateById(subentity);
				if (!b1){
				return ActionResult.fail("当前表单原数据已被调整，请重新进入该页面编辑并提交数据");
				}
        return ActionResult.success("更新成功");
        }else{
            return ActionResult.fail("更新失败，数据不存在");
        }
    }



   /**
    * 删除
    *
    * @param id
    * @return
    */
    @ApiOperation("删除")
    @DeleteMapping("/{id}")
    @Transactional
    public ActionResult delete(@PathVariable("id") String id){
        ZcglZcrzZcdyEntity entity= zcglZcrzZcdyService.getInfo(id);
        if(entity!=null){
            zcglZcrzZcdyService.delete(entity);

        }
        return ActionResult.success("删除成功");
    }






}
